function isUndefined(arg) {
  if (JSON.stringify(arg) === '{}') {
    return true
  }
  if (JSON.stringify(arg) === '[]') {
    return true
  }
  if (Object.prototype.toString.call(arg) === '[object Undefined]') {
    return true
  }
  return false
}

function isUndefined(arg) {
  if (Object.prototype.toString.call(arg) === '[object Object]') {
    if (!Object.keys(arg).length) {
      return true
    }
  }
  if (Object.prototype.toString.call(arg) === '[object Undefined]') {
    return true
  }
  return false
}

/*
实现一个判断传入的参数是否为 null 类型
返回一个布尔值，如果是null 为true，否之，为fase
*/
function isNull(arg) {
  if (Object.prototype.toString.call(arg) === '[object Null]') {
    return true
  }
  return false
}

// 测试用例
var expUndefined = undefined
var expNull = null
var expZero = 0
var a
var o = new Object()
console.log(isUndefined(expUndefined)) // ->true
console.log(isUndefined(expNull)) // ->false
console.log(isUndefined(a)) // ->true
console.log(isUndefined(o)) // ->true
console.log(isNull(expUndefined)) // ->false
console.log(isNull(expNull)) // ->true
console.log(isNull(expZero)) // ->false
console.log(isNull(a)) // ->false
console.log(isNull(o)) // ->false
